/*******************************************************************************
 * 版权：北京润尼尔网络科技有限公司，保留所有版权<br>
 * 版本：v1.0.0<br>
 * 文件：UICompositeForm.js<br>
 * 日期：2016年8月8日<br>
 * 作者: 林秀桃<br>
 * 功能：Form组件<br>
 * 
 * 修改记录：<br>
 * 日期 描述 更新功能<br>
 ******************************************************************************/

window.makeNamespace(window,"Rainier.UI.V2");


/**
 * 类型名称：Rainier.UI.V2.UICompositeForm<br>
 * 类型功能：Form表单组件声明<br>
 * 接口函数：<br>
 * 成员变量：<br>
 */
Rainier.UI.V2.UICompositeForm = Rainier.UI.V2.UIComposite.extend({
	
	NAME : "Rainier.UI.V2.UICompositeForm",
	
	/**
	 * 函数名称：Rainier.UI.V2.UICompositeForm.init<br>
	 * 函数功能：构造函数<br>
	 * 参数输入：objParentComposite	:  	父组件实例 一般为对应的panel或者layout中添加<br>
	 * 参数输入：objProperties		 	:	
	 * {
 * 		    url:...,							//提交url地址
		    onSubmit: function(param){			//事件触发处理函数
		        param.p1 = 'value1';
		        param.p2 = 'value2';
		    }
	 * }
	 * 注：具体参数信息参照easyUI官网该组件Properties<br>	
	 * 异常信息：无<br>
	 */
	init : function(objParentComposite,objProperties){
		//使用父类初始化子类对象
		this._super(objParentComposite,objProperties);
	},

	/**
	 * 函数名称：Rainier.UI.V2.UICompositeForm.appendEventHandler<br>
	 * 函数功能：添加事件代理<br>
	 * 参数输入：无<br>
	 * 参数输出：无<br>
	 * 函数返回：无<br>
	 * 异常信息：<br>
	 */
	appendEventHandler : function(){		
		this.m_aEventList = ['onSubmit',
		                     'onProgress',
		                     'success',
		                     'onBeforeLoad',
		                     'onLoadSuccess',
		                     'onLoadError',
		                     'onChange'
		                     ];
		this._super();
	},
	
	/**
	 * 函数名称：Rainier.UI.V2.UICompositeForm.createComposite<br>
	 * 函数功能：创建组件<br>
	 * 参数输入：eleParent : 父组件的节点元素<br>
	 * 函数返回：无<br>
	 * 异常信息：无<br>
	 */
	createComposite : function(eleParent){
		this._super(eleParent);		
		var newEle = this.CreateElement("form",this.m_objProperties.id);
		eleParent.append(newEle);
		newEle.form(this.m_objProperties);
	},
	
	
	/**
	 * 函数名称：Rainier.UI.V2.UICompositeForm.callUiMethod<br>
	 * 函数功能：添加事件代理<br>
	 * 参数输入：sMethod : 方法名称
	 * 参数输入：objArgs : 更具方法名称，在该类方法中查找对应参数，或easyUI官网对应组件的方法中检索
	 * 函数返回：根据调用方法，返回相应的数值<br>
	 * 异常信息：<br>
	 */
	callUiMethod : function(sMethod,objArgs){
		return this.getElement().form(sMethod,objArgs);
	},
	
	/**
	 * 函数名称：Rainier.UI.V2.UICompositeForm.submit<br>
	 * 函数功能：实现form表单的提交功能，完成form表单中数据的提交。<br>
	 * 参数输入：objOptions : 
	 * {
	 *	url: ...,
	 *	onSubmit: function(){
	 *		var isValid = $(this).form('validate');
	 *		if (!isValid){
	 *			$.messager.progress('close');	// hide progress bar while the form is invalid
	 *		}
	 *		return isValid;	// return false will stop the form submission
	 *	},
	 *	success: function(){
	 *		$.messager.progress('close');	// hide progress bar while submit successfully
	 *	}
	 * }
	 * <br>
	 * 参数输出：无<br>
	 * 函数返回：无<br>
	 * 异常信息：无<br>
	 */
	submit : function(objOptions){
		return this.getElement().form('submit',objOptions);
	},
	
	/**
	 * 函数名称：Rainier.UI.V2.UICompositeForm.load<br>
	 * 函数功能：加载数据，完成form表单的初始化<br>
	 * 参数输入：data : 
	 * {
	 *  name:'name2',
	 *	email:'mymail@gmail.com',
	 *	subject:'subject2',
	 *	message:'message2',
	 *	language:5
	 * }
	 * <br>
	 * 参数输出：<br>
	 * 函数返回：<br>
	 * 异常信息：<br>
	 */
	load : function(data){
		return this.getElement().form('load',data);	
	},
	
	/**
	 * 函数名称：Rainier.UI.V2.UICompositeForm.clear<br>
	 * 函数功能：清空form表单组件中的数据<br>
	 * 参数输入：无<br>
	 * 参数输出：无<br>
	 * 函数返回：无<br>
	 * 异常信息：无<br>
	 */
	clear : function(){
		return this.getElement().form('clear');
	},
	
	/**
	 * 函数名称：Rainier.UI.V2.UICompositeForm.reset<br>
	 * 函数功能：重置form表单组件中的数据<br>
	 * 参数输入：无<br>
	 * 参数输出：无<br>
	 * 函数返回：无<br>
	 * 异常信息：无<br>
	 */
	reset : function(){
		return this.getElement().form('reset');
	},
	
	/**
	 * 函数名称：Rainier.UI.V2.UICompositeForm.validate<br>
	 * 函数功能：对当前form表单组件中校验插件进行校验，和 validatebox 插件一起使用<br>
	 * 参数输入：无<br>
	 * 参数输出：无<br>
	 * 函数返回：true/false : boolean类型<br>
	 * 异常信息：无<br>
	 */
	validate : function(){
		return this.getElement().form('validate');
	},
	
	/**
	 * 函数名称：Rainier.UI.V2.UICompositeForm.enableValidation<br>
	 * 函数功能：设置输入框组件为可校验输入框<br>
	 * 参数输入：无<br>
	 * 参数输出：无<br>
	 * 函数返回：无<br>
	 * 异常信息：无<br>
	 */
	enableValidation : function(){
		return this.getElement().form('enableValidation');
	},
	
	/**
	 * 函数名称：Rainier.UI.V2.UICompositeForm.disableValidation<br>
	 * 函数功能：设置输入框组件为不可校验输入框<br>
	 * 参数输入：无<br>
	 * 参数输出：无<br>
	 * 函数返回：无<br>
	 * 异常信息：无<br>
	 */
	disableValidation : function(){
		return this.getElement().form('disableValidation');
	},
	
	/**
	 * 函数名称：Rainier.UI.V2.UICompositeForm.resetValidation<br>
	 * 函数功能：重新设置校验输入框组件<br>
	 * 参数输入：无<br>
	 * 参数输出：无<br>
	 * 函数返回：无<br>
	 * 异常信息：无<br>
	 */
	resetValidation : function(){
		return this.getElement().form('resetValidation');
	},
	
	/**
	 * 函数名称：Rainier.UI.V2.UICompositeForm.resetDirty<br>
	 * 函数功能：重新设置多次提交的flag(标记)<br>
	 * 参数输入：无<br>
	 * 参数输出：无<br>
	 * 函数返回：无<br>
	 * 异常信息：无<br>
	 */
	resetDirty : function(){
		return this.getElement().form('resetDirty');
	}

});